package com.winner.adapter_pattern;

/**
 * 类适配器模式/对象适配器模式（对象适配器模式是适配器模式常用的一种, ）/接口适配器模式
 * 如下代码就是 对象适配器模式
 * 适配器模式 将一个类的接口转换成用户希望得到的另一种接口.它使原本不兼容的接口得以协同工作,
 * 可以简单理解为  转换接口 适配器模式通常用于解决接口不兼容的问题
 *
 * @Author wangxinle5
 * @since 2024-04-23
 */
// 客户端类
public class ObjectClient {
    public void main(String[] args) {
        // 创建需要适配的类的实例
        Adaptee adaptee = new Adaptee();

        // 创建对象适配器，并将需要适配的类的实例传入
        Target adapter = new ObjectAdapter(adaptee);

        // 调用目标接口的方法，实际上是调用了需要适配的类的方法
        adapter.request();
    }

    // 目标接口
    interface Target {
        void request();
    }

    // 需要适配的类
    class Adaptee {
        public void specificRequest() {
            System.out.println("Adaptee: specificRequest");
        }
    }

    // 对象适配器
    class ObjectAdapter implements Target {
        private Adaptee adaptee;

        public ObjectAdapter(Adaptee adaptee) {
            this.adaptee = adaptee;
        }

        @Override
        public void request() {
            adaptee.specificRequest();
        }
    }
}


